index.html.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. <template>
  2. <div>
  3. <HomePageHead></HomePageHead>
  4. <HomePageNavigation></HomePageNavigation>
  5. <HomeSecondaryHeading :titleData="pageData" :pinyinid="routeId"></HomeSecondaryHeading>
  6. <!-- 频道页 -->
  7. <main class="index_main">
  8. <!--板块1-->
  9. <section class="channel_1 clearfix">
  10. <div class="channel_1_left">
  11. <div class="channel_1_box">
  12. <HomeSwiperSnscChannel :data="pageData[0].data"></HomeSwiperSnscChannel>
  13. </div>
  14. </div>
  15. <div class="channel_1_right">
  16. <div class="channel_head">
  17. <NuxtLink class="channel_head_name" :href="getLinkPath(pageData[0])" v-if="pageData[0]"
  18. :title="pageData[0].alias">
  19. {{ pageData[0].alias }}
  20. </NuxtLink>
  21. <NuxtLink class="channel_head_more" :href="getLinkPath(pageData[0])" v-if="pageData[0]"
  22. :title="pageData[0].alias">
  23. 栏目简介
  24. </NuxtLink>
  25. </div>
  26. <div class="channel_name_ul" v-if="pageData[0]">
  27. <div class="channel_name_ul_li" v-for="item in pageData[0].data2">
  28. <NuxtLink class="channel_name_ul_li_dot1 dot1" :href="getLinkPathDetail(item)"
  29. :title="item.title" :key="item.id" :target="item.islink == 1 ? '_blank' : '_self'">
  30. {{ item.title }}
  31. </NuxtLink>
  32. </div>
  33. </div>
  34. </div>
  35. </section>
  36. <!--板块2-->
  37. <section class="channel_2 clearfix">
  38. <div class="channel_1_left clearfix">
  39. <!--open 商贸活动-->
  40. <div class="channel_head">
  41. <NuxtLink class="channel_head_name" :href="getLinkPath(pageData[1])" v-if="pageData[1]"
  42. :title="pageData[1].alias">
  43. {{ pageData[1].alias }}
  44. </NuxtLink>
  45. <NuxtLink class="channel_head_more" :href="getLinkPath(pageData[1])" v-if="pageData[1]"
  46. :title="pageData[1].alias">
  47. 栏目简介
  48. </NuxtLink>
  49. </div>
  50. <div class="channel2_top_content clearfix" v-if="pageData[1]">
  51. <div class="channel_1_box_1 clearfix">
  52. <div class="channel_img_big_1_ul">
  53. <div class="channel_img_big_1_li" v-for="item in pageData[1].data">
  54. <NuxtLink class="channel_img_big_1_li_a" :href="getLinkPathDetail(item)"
  55. :title="item.title" :key="item.id"
  56. :target="item.islink == 1 ? '_blank' : '_self'">
  57. <img class="channel_img_big_1_li_img" :src="item.imgurl" alt="item.title">
  58. <div class="channel_img_big_1_li_dot1 dot1">
  59. {{ item.title }}
  60. </div>
  61. </NuxtLink>
  62. </div>
  63. </div>
  64. </div>
  65. <div class="channel_1_box_2 clearfix">
  66. <div class="channel_ul_2">
  67. <NuxtLink class="channel_ul_2_a dot1" :href="getLinkPathDetail(item)"
  68. :title="item.title" v-for="item in pageData[1].data2" :key="item.id"
  69. :target="item.islink == 1 ? '_blank' : '_self'">
  70. {{ item.title }}
  71. </NuxtLink>
  72. </div>
  73. </div>
  74. </div>
  75. <!--end 商贸活动-->
  76. <!--open 科教活动-->
  77. <div class="channel_head">
  78. <NuxtLink class="channel_head_name" :href="getLinkPath(pageData[2])" v-if="pageData[2]"
  79. :title="pageData[2].alias">
  80. {{ pageData[2].alias }}
  81. </NuxtLink>
  82. <NuxtLink class="channel_head_more" :href="getLinkPath(pageData[2])" v-if="pageData[2]"
  83. :title="pageData[2].alias">
  84. 栏目简介
  85. </NuxtLink>
  86. </div>
  87. <div class=" clearfix" v-if="pageData[2]">
  88. <div class="channel_1_box_1 clearfix">
  89. <div class="channel_img_big_2_ul">
  90. <div class="channel_img_big_2_li" v-for="item in pageData[2].data">
  91. <NuxtLink class="channel_img_big_2_li_a" :href="getLinkPathDetail(item)"
  92. :title="item.title" :key="item.id"
  93. :target="item.islink == 1 ? '_blank' : '_self'">
  94. <img class="channel_img_big_2_li_img" :src="item.imgurl" alt="item.title">
  95. <div class="channel_img_big_2_li_dot1 dot1">
  96. {{ item.title }}
  97. </div>
  98. </NuxtLink>
  99. </div>
  100. </div>
  101. </div>
  102. <div class="channel_1_box_2 clearfix">
  103. <div class="channel_ul_3">
  104. <NuxtLink class="channel_ul_3_a dot1" :href="getLinkPathDetail(item)"
  105. :title="item.title" v-for="item in pageData[2].data2" :key="item.id"
  106. :target="item.islink == 1 ? '_blank' : '_self'">
  107. {{ item.title }}
  108. </NuxtLink>
  109. </div>
  110. </div>
  111. </div>
  112. <!--end 科教活动-->
  113. </div>
  114. <div class="channel_1_right clearfix">
  115. <!--open 产业动态-->
  116. <div class="channel_head">
  117. <NuxtLink class="channel_head_name" :href="getLinkPath(pageData[3])" v-if="pageData[3]"
  118. :title="pageData[3].alias">
  119. {{ pageData[3].alias }}
  120. </NuxtLink>
  121. <NuxtLink class="channel_head_more" :href="getLinkPath(pageData[3])" v-if="pageData[3]"
  122. :title="pageData[3].alias">
  123. 栏目简介
  124. </NuxtLink>
  125. </div>
  126. <div class="channel_img_big_3_ul clearfix" v-if="pageData[3].data">
  127. <div class="channel_img_big_3_li" v-for="item in pageData[3].data">
  128. <NuxtLink class="channel_img_big_3_li_a" :href="getLinkPathDetail(item)" :title="item.title"
  129. :key="item.id" :target="item.islink == 1 ? '_blank' : '_self'">
  130. <img class="channel_img_big_3_li_img" :src="item.imgurl" alt="item.title">
  131. <div class="channel_img_big_3_li_dot1 dot1">
  132. {{ item.title }}
  133. </div>
  134. </NuxtLink>
  135. </div>
  136. </div>
  137. <div class="channel_ul_4" v-if="pageData[3].data2">
  138. <div class="channel_ul_4_li dot1" v-for="(item, index) in pageData[3].data2">
  139. <div class="channel_ul_4_li_num">{{ index + 1 }}</div>
  140. <NuxtLink class="channel_img_big_3_li_a" :href="getLinkPathDetail(item)" :title="item.title"
  141. :key="item.id" :target="item.islink == 1 ? '_blank' : '_self'">
  142. <div class="channel_ul_4_a dot1">
  143. {{ item.title }}
  144. </div>
  145. </NuxtLink>
  146. </div>
  147. </div>
  148. <!--end 产业动态-->
  149. </div>
  150. </section>
  151. <!--广告1-->
  152. <HomeAdvertising :data="adImg1"></HomeAdvertising>
  153. <section class="channel_3 clearfix">
  154. <!--open 农贸节庆-->
  155. <div class="channel_1_left clearfix">
  156. <div class="channel_head">
  157. <NuxtLink class="channel_head_name" :href="getLinkPath(pageData[4])" v-if="pageData[4]"
  158. :title="pageData[4].alias">
  159. {{ pageData[4].alias }}
  160. </NuxtLink>
  161. <NuxtLink class="channel_head_more" :href="getLinkPath(pageData[4])" v-if="pageData[4]"
  162. :title="pageData[4].alias">
  163. 栏目简介
  164. </NuxtLink>
  165. </div>
  166. <div class=" clearfix" v-if="pageData[4]">
  167. <div class="channel_1_box_1 clearfix">
  168. <div class="channel_img_big_4_ul">
  169. <div class="channel_img_big_4_li" v-for="item in pageData[4].data">
  170. <NuxtLink class="channel_img_big_4_li" :href="getLinkPathDetail(item)"
  171. :title="item.title" :key="item.id"
  172. :target="item.islink == 1 ? '_blank' : '_self'">
  173. <img class="channel_img_big_4_li_img" :src="item.imgurl" alt="item.title">
  174. <div class="channel_img_big_4_li_dot2 dot2">
  175. {{ item.title }}
  176. </div>
  177. </NuxtLink>
  178. </div>
  179. </div>
  180. <div class="channel_img_ul_1 clearfix">
  181. <div class="channel_img_ul_1_li" v-for="item in pageData[4].data2">
  182. <NuxtLink class="channel_img_ul_1_li_a" :href="getLinkPathDetail(item)"
  183. :title="item.title" :key="item.id"
  184. :target="item.islink == 1 ? '_blank' : '_self'">
  185. <img class="channel_img_ul_1_li_img" :src="item.imgurl" alt="item.title">
  186. <div class="channel_img_ul_1_li_dot2 dot2">
  187. {{ item.title }}
  188. </div>
  189. </NuxtLink>
  190. </div>
  191. </div>
  192. </div>
  193. <div class="channel_1_box_2 clearfix">
  194. <div class="channel_ul_5">
  195. <NuxtLink class="channel_ul_5_a dot1" :href="getLinkPathDetail(item)"
  196. v-for="item in pageData[4].data3" :title="item.title" :key="item.id"
  197. :target="item.islink == 1 ? '_blank' : '_self'">
  198. {{ item.title }}
  199. </NuxtLink>
  200. </div>
  201. </div>
  202. </div>
  203. </div>
  204. <!--end 农贸节庆-->
  205. <!--open 市场行情-->
  206. <div class="channel_1_right clearfix">
  207. <div class="channel_head">
  208. <NuxtLink class="channel_head_name" :href="getLinkPath(pageData[5])" v-if="pageData[5]"
  209. :title="pageData[5].alias">
  210. {{ pageData[5].alias }}
  211. </NuxtLink>
  212. <NuxtLink class="channel_head_more" :href="getLinkPath(pageData[5])" v-if="pageData[5]"
  213. :title="pageData[5].alias">
  214. 栏目简介
  215. </NuxtLink>
  216. </div>
  217. <div class="channel_img_ul_2 clearfix" v-if="pageData[5].data">
  218. <div class="channel_img_ul_2_li" v-for="item in pageData[5].data">
  219. <NuxtLink class="channel_img_ul_2_li" :href="getLinkPathDetail(item)" :title="item.title"
  220. :key="item.id" :target="item.islink == 1 ? '_blank' : '_self'">
  221. <img class="channel_img_ul_2_li_img" :src="item.imgurl" alt="item.title">
  222. <div class="channel_img_ul_2_li_dot1 dot1">
  223. {{ item.title }}
  224. </div>
  225. </NuxtLink>
  226. </div>
  227. </div>
  228. <div class="channel_ul_6" v-if="pageData[5].data2">
  229. <NuxtLink class="channel_ul_6_a dot1" :href="getLinkPathDetail(item)" :title="item.title"
  230. v-for="item in pageData[5].data2" :key="item.id"
  231. :target="item.islink == 1 ? '_blank' : '_self'">
  232. {{ item.title }}
  233. </NuxtLink>
  234. </div>
  235. <!--end 市场行情-->
  236. </div>
  237. </section>
  238. <section class="channel_4 clearfix">
  239. <div class="channel_1_left clearfix">
  240. <!--open 业界交流-->
  241. <div class="channel_head">
  242. <NuxtLink class="channel_head_name" :href="getLinkPath(pageData[6])" v-if="pageData[6]"
  243. :title="pageData[6].alias">
  244. {{ pageData[6].alias }}
  245. </NuxtLink>
  246. <NuxtLink class="channel_head_more" :href="getLinkPath(pageData[6])" v-if="pageData[6]"
  247. :title="pageData[6].alias">
  248. 栏目简介
  249. </NuxtLink>
  250. </div>
  251. <div class="channel_ul_7">
  252. <NuxtLink class="channel_ul_7_a dot1" :href="getLinkPathDetail(item)" :title="item.title"
  253. v-for="item in pageData[6].data" :key="item.id"
  254. :target="item.islink == 1 ? '_blank' : '_self'">
  255. {{ item.title }}
  256. </NuxtLink>
  257. </div>
  258. <!--end 业界交流-->
  259. </div>
  260. <!--open 主题活动-->
  261. <div class="channel_1_right clearfix">
  262. <div class="channel_head">
  263. <NuxtLink class="channel_head_name" :href="getLinkPath(pageData[7])" v-if="pageData[7]"
  264. :title="pageData[7].alias">
  265. {{ pageData[7].alias }}
  266. </NuxtLink>
  267. <NuxtLink class="channel_head_more" :href="getLinkPath(pageData[7])" v-if="pageData[7]"
  268. :title="pageData[7].alias">
  269. 栏目简介
  270. </NuxtLink>
  271. </div>
  272. <div class="channel_img_big_5_ul" v-if="pageData[7].data">
  273. <div class="channel_img_big_5_li" v-for="item in pageData[7].data">
  274. <NuxtLink class="channel_img_big_5_li_a" :href="getLinkPathDetail(item)" :title="item.title"
  275. v-for="item in pageData[7].data" :key="item.id"
  276. :target="item.islink == 1 ? '_blank' : '_self'">
  277. <img class="channel_img_big_5_li_img" :src="item.imgurl" alt="item.title">
  278. <div class="channel_img_big_5_li_dot2 dot2">{{ item.title }}</div>
  279. </NuxtLink>
  280. </div>
  281. </div>
  282. <!--end 主题活动-->
  283. </div>
  284. </section>
  285. </main>
  286. <!-- 页脚部分 -->
  287. <HomeFoot1></HomeFoot1>
  288. </div>
  289. </template>
  290. <script setup>
  291. //0.加载页面依赖 start ---------------------------------------->
  292. import { ref, onMounted } from 'vue';
  293. import { ElMessage } from 'element-plus';
  294. //0.加载页面依赖 end ---------------------------------------->
  295. //1.获得路由id start ---------------------------------------->
  296. const targetSegment = getRoutePath(1);
  297. //1.1 获得当前的路由id
  298. let routeId;
  299. //通过导航路径反向查询导航id
  300. const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
  301. method: 'GET',
  302. query: {
  303. 'pinyin': targetSegment,
  304. },
  305. });
  306. if (getRouteId.code == 200) {
  307. routeId = getRouteId.data.category_id
  308. } else {
  309. console.log("获得路由id出错!", getRouteId.message)
  310. }
  311. //1.获得路由id end ---------------------------------------->
  312. //2.选项卡 start ---------------------------------------->
  313. let showTabs = ref(1)
  314. let qhtabs = function (number) {
  315. console.log(number)
  316. showTabs.value = number
  317. }
  318. //2.选项卡 end ---------------------------------------->
  319. //3.广告 start ---------------------------------------->
  320. let adImg1 = ref({})
  321. let adImg2 = ref({})
  322. let adImg3 = ref({})
  323. let adImg4 = ref({})
  324. onMounted(async () => {
  325. //从客户端获取行政职能部门 加快打开速度
  326. const { $webUrl, $CwebUrl } = useNuxtApp();
  327. //广告1
  328. let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_category_0001`
  329. const responseAd1 = await fetch(url, {
  330. headers: {
  331. 'Content-Type': 'application/json',
  332. 'Userurl': $CwebUrl,
  333. 'Origin': $CwebUrl
  334. }
  335. });
  336. const resultAd1 = await responseAd1.json();
  337. adImg1.value = resultAd1.data[0];
  338. //广告2
  339. let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_category_0002`
  340. const responseAd2 = await fetch(url2, {
  341. headers: {
  342. 'Content-Type': 'application/json',
  343. 'Userurl': $CwebUrl,
  344. 'Origin': $CwebUrl
  345. }
  346. });
  347. const resultAd2 = await responseAd2.json();
  348. adImg2.value = resultAd2.data[0];
  349. //广告3
  350. let url3 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_category_0003`
  351. const responseAd3 = await fetch(url3, {
  352. headers: {
  353. 'Content-Type': 'application/json',
  354. 'Userurl': $CwebUrl,
  355. 'Origin': $CwebUrl
  356. }
  357. });
  358. const resultAd3 = await responseAd3.json();
  359. adImg3.value = resultAd3.data[0];
  360. //广告4
  361. let url4 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_category_0004`
  362. const responseAd4 = await fetch(url4, {
  363. headers: {
  364. 'Content-Type': 'application/json',
  365. 'Userurl': $CwebUrl,
  366. 'Origin': $CwebUrl
  367. }
  368. });
  369. const resultAd4 = await responseAd4.json();
  370. adImg4.value = resultAd4.data[0];
  371. })
  372. //3.广告 end ---------------------------------------->
  373. //4.页面数据 start ---------------------------------------->
  374. const pageData = ref([
  375. //示例:
  376. // {
  377. // id: 1,
  378. // title: "", //该导航的标题
  379. // data: [], //数据1
  380. // data1: [], //数据2
  381. // data2: [], //数据3
  382. // data3: [], //数据4
  383. // data4: [], //数据5
  384. // category_id1: "", //子导航id1
  385. // category_id2: "",
  386. // category_id3: "",
  387. // category_id4: "",
  388. // title1: "", //子导航标题1
  389. // title2: "",
  390. // title3: "",
  391. // title4: "",
  392. // cid: "" //该导航的id
  393. // },
  394. ])
  395. //4.1 获取所有导航
  396. try {
  397. const navigateData = await requestDataPromise('/web/getWebsiteModelCategory', {
  398. method: 'GET',
  399. query: {
  400. 'placeid': 1,
  401. 'pid': routeId,
  402. 'num': 8
  403. },
  404. });
  405. if (navigateData.code == 200) {
  406. // 遍历可用的导航池放到页面中
  407. for (let index in navigateData.data) {
  408. let data = {
  409. title: navigateData.data[index].name,
  410. cid: navigateData.data[index].category_id,
  411. children_count: navigateData.data[index].children_count,
  412. alias: navigateData.data[index].alias,
  413. aLIas_pinyin: targetSegment + "/" + navigateData.data[index].aLIas_pinyin,
  414. data: [],
  415. data1: [],
  416. data2: [],
  417. data3: [],
  418. data4: [],
  419. category_id1: "",
  420. category_id2: "",
  421. category_id3: "",
  422. category_id4: "",
  423. title1: "",
  424. title2: "",
  425. title3: "",
  426. title4: ""
  427. };
  428. if (navigateData.data[index].is_url == 1) {
  429. // 处理 URL 的逻辑
  430. } else {
  431. //每个页面最多8个模块
  432. pageData.value.push(data);
  433. }
  434. }
  435. //导航池加载完毕,开始申请模块数据
  436. let getJson = [
  437. { "parent": routeId + ",0,0", "child": pageData.value[0].cid + ",5,9" },//模块1
  438. { "parent": routeId + ",0,0", "child": pageData.value[1].cid + ",1,6" },//模块2
  439. { "parent": routeId + ",0,0", "child": pageData.value[2].cid + ",1,6" },//模块3
  440. { "parent": routeId + ",0,0", "child": pageData.value[3].cid + ",1,6" },//模块4
  441. { "parent": routeId + ",0,0", "child": pageData.value[4].cid + ",3,10" },//模块5
  442. { "parent": routeId + ",0,0", "child": pageData.value[5].cid + ",2,6" },//模块6
  443. { "parent": routeId + ",0,0", "child": pageData.value[6].cid + ",0,6" },//模块7
  444. { "parent": routeId + ",0,0", "child": pageData.value[7].cid + ",1,0" },//模块8
  445. ]
  446. let jsonString = JSON.stringify(getJson);
  447. getPageAllData(jsonString);
  448. } else {
  449. console.log("错误:渲染8个模块环节出错,请检查是否存在没有数据的模块!")
  450. }
  451. } catch (error) {
  452. console.log("错误:导航池渲染执行接口出错!请检查频道页渲染的模块数据是否完整!")
  453. }
  454. async function getPageAllData(jsonString) {
  455. const mkdata = await requestDataPromise('/web/getWebsiteAllArticle', {
  456. method: 'GET',
  457. query: {
  458. 'id': jsonString
  459. },
  460. });
  461. if (mkdata.code == 200) {
  462. //模块1 顶部大图和列表
  463. pageData.value[0].data = mkdata.data[0].child.imgnum;
  464. pageData.value[0].data2 = mkdata.data[0].child.textnum;
  465. //模块2
  466. pageData.value[1].data = mkdata.data[1].child.imgnum;
  467. pageData.value[1].data2 = mkdata.data[1].child.textnum;
  468. //模块3
  469. pageData.value[2].data = mkdata.data[2].child.imgnum;
  470. pageData.value[2].data2 = mkdata.data[2].child.textnum;
  471. //模块4
  472. pageData.value[3].data = mkdata.data[3].child.imgnum;
  473. pageData.value[3].data2 = mkdata.data[3].child.textnum;
  474. //模块5
  475. for (let index in mkdata.data[4].child.imgnum) {
  476. if (index < 1) {
  477. pageData.value[4].data.push(mkdata.data[4].child.imgnum[index]);
  478. } else {
  479. pageData.value[4].data2.push(mkdata.data[4].child.imgnum[index]);
  480. }
  481. }
  482. pageData.value[4].data3 = mkdata.data[4].child.textnum;
  483. //模块6
  484. pageData.value[5].data = mkdata.data[5].child.imgnum;
  485. pageData.value[5].data2 = mkdata.data[5].child.textnum;
  486. //模块7
  487. pageData.value[6].data = mkdata.data[6].child.textnum;
  488. //模块8
  489. pageData.value[7].data = mkdata.data[7].child.imgnum;
  490. } else {
  491. ElMessage.error(mkdata.message)
  492. }
  493. }
  494. //4.页面数据 end ---------------------------------------->
  495. //5.设置seo信息 start---------------------------------------->
  496. const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
  497. method: 'GET',
  498. query: {
  499. 'catid': routeId
  500. },
  501. });
  502. if (setData.code == 200) {
  503. let seoTitle = setData.data.seo_title;
  504. let seoDescription = setData.data.seo_description;
  505. let seoKeywords = setData.data.seo_keywords;
  506. let seoSuffix = setData.data.suffix;
  507. let seoName = setData.data.website_name;
  508. useSeoMeta({
  509. title: seoTitle + "_" + seoSuffix,
  510. meta: [
  511. { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
  512. { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
  513. ]
  514. });
  515. } else {
  516. console.log("设置频道页SEO出错!", setData.message)
  517. }
  518. //5.设置seo信息 end---------------------------------------->
  519. </script>
  520. <style lang="less" scoped>
  521. @import '@/assets/css/class.less';
  522. </style>